home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / basic / svgaqb21.zip / SVGAMOD1.BAS < prev    next >
BASIC Source File  |  1994-05-09  |  31KB  |  1,102 lines

  1. '****************************************************************************
  2. '*
  3. '*      'SVGAQB' & 'SVGAPV' A Super VGA Graphics Librarys for use with
  4. '*      MS QuickBASIC 4.X and MS PDS/VBDOS
  5. '*      Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      MS, QuickBASIC, PDS, and VBDOS are registered trademarks of
  8. '*      Microsoft Corporation. GIF and 'Graphics Interchange Format' are
  9. '*      trademarks (TM) ofCompuServe, Incorporated, an H&R Block Company.
  10. '*
  11. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  12. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  13. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  14. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  15. '*    **********************************************************************
  16. '*
  17. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  18. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  19. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  20. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  21. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  22. '*    * liable for any damages resulting from the use or misuse of the     *
  23. '*    * SOFTWARE and documentation.                                        *
  24. '*    **********************************************************************
  25. '*
  26. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  27. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  28. '*    * by the U.S. Government is subject to the restrictions as set forth *
  29. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  30. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  31. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  32. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  33. '*    **********************************************************************
  34. '*
  35. '*    **********************************************************************
  36. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  37. '*    * terms and conditions.                                              *
  38. '*    **********************************************************************
  39. '*
  40. '****************************************************************************
  41.  
  42.  
  43.     REM $INCLUDE: 'SVGABC.BI'
  44.     REM $INCLUDE: 'SVGADEMO.BI'
  45.  
  46. REM $DYNAMIC
  47.     SUB DOBLOCK (RET$)
  48.  
  49.     MYPI! = ATN(1) * 4
  50.  
  51.     '*************************************************************************
  52.     '* SET UP THE TITLE
  53.     '*************************************************************************
  54.     TITLE$ = "DEMO 5: Block functions and Sprites"
  55.     PALSET Pal, 0, 255
  56.  
  57.     '*************************************************************************
  58.     '* SHOW BLOCK GET (DRAW SOME CIRCLES AND "GET A CHUNK OF THEM")
  59.     '*************************************************************************
  60.     FILLSCREEN 0
  61.     SETVIEW 0, 0, GETMAXX, GETMAXY
  62.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  63.     A$ = "BLKGET (X1,Y1,X2,Y2,GfxBlock)"
  64.     DRWSTRING 1, 7, 0, A$, 10, 16
  65.     Colr = 16
  66.     FOR I = 0 TO GETMAXX \ 2
  67.         DRWCIRCLE 1, Colr, GETMAXX \ 4 + I, GETMAXY \ 2, GETMAXY \ 5
  68.         Colr = Colr + 4
  69.         IF Colr > 255 THEN
  70.             Colr = 16
  71.         END IF
  72.     NEXT I
  73.     XINC = GETMAXX \ 20
  74.     YINC = GETMAXY \ 20
  75.     X1 = GETMAXX \ 2 - XINC
  76.     Y1 = GETMAXY \ 2 - YINC
  77.     X2 = GETMAXX \ 2 + XINC
  78.     Y2 = GETMAXY \ 2 + YINC
  79.     DRWBOX 1, 0, X1, Y1, X2, Y2
  80.     BLKSIZE1 = (((X2 - X1 + 1) * (Y2 - Y1 + 1)) / 2) + 3
  81.     REDIM GFXBLK1(0 TO BLKSIZE1) AS INTEGER
  82.     BLKGET X1, Y1, X2, Y2, GFXBLK1(0)
  83.     GETKEY RET$
  84.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  85.         FILLSCREEN 0
  86.         EXIT SUB
  87.     END IF
  88.  
  89.     '*************************************************************************
  90.     '* SHOW BLOCK ROTATE AND SPRITE STUFF
  91.     '*************************************************************************
  92.     X = (X2 - X1) \ 2 + X1
  93.     Y = (Y2 - Y1) \ 2 + Y1
  94.     A$ = "BLKROTATE (Angle,BackFill,SourceGfxBlock,DestGfxBlock)   "
  95.     DRWSTRING 1, 7, 0, A$, 10, 16
  96.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  97.     DRWSTRING 1, 7, 0, A$, 10, 32
  98.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  99.     DRWSTRING 1, 7, 0, A$, 10, 48
  100.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  101.     BLKSIZE2 = (BLKROTATESIZE(45, GFXBLK1(0)) \ 2) + 1
  102.     REDIM GFXBLK2(0 TO BLKSIZE2) AS INTEGER
  103.     REDIM GFXBLK3(0 TO BLKSIZE2) AS INTEGER
  104.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  105.     SETVIEW 0, 64, GETMAXX, GETMAXY
  106.     FOR I = 0 TO 360 STEP 3
  107.         DUMMY = BLKROTATE(I, 1, GFXBLK1(0), GFXBLK2(0))
  108.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  109.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  110.         SDELAY 4
  111.     NEXT I
  112.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  113.     BLKPUT 1, X1, Y1, GFXBLK1(0)
  114.     GETKEY RET$
  115.     SETVIEW 0, 0, GETMAXX, GETMAXY
  116.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  117.         FILLSCREEN 0
  118.         EXIT SUB
  119.     END IF
  120.  
  121.     '*************************************************************************
  122.     '* SHOW BLOCK RESIZE AND SPRITE STUFF
  123.     '*************************************************************************
  124.     A$ = "BLKRESIZE (NewWidth,NewHeight,SourceGfxBlock,DestGfxBlock)   "
  125.     DRWSTRING 1, 7, 0, A$, 10, 16
  126.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  127.     DRWSTRING 1, 7, 0, A$, 10, 32
  128.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  129.     DRWSTRING 1, 7, 0, A$, 10, 48
  130.     SETVIEW 0, 64, GETMAXX, GETMAXY
  131.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  132.     BLKSIZE3 = (((X2 - X1 + 1) * (Y2 - Y1 + 1)) / 2) + 3
  133.     REDIM GFXBLK3(0 TO BLKSIZE3) AS INTEGER
  134.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  135.     BLKSIZE2 = (((GFXBLK1(0) + 1) * (GFXBLK1(1) + 1)) / 2) + 3
  136.     REDIM GFXBLK2(BLKSIZE2) AS INTEGER
  137.     FOR I = 0 TO XINC
  138.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  139.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  140.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  141.         SDELAY 5
  142.     NEXT I
  143.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  144.     FOR I = XINC TO 0 STEP -1
  145.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  146.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  147.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  148.         SDELAY 5
  149.     NEXT I
  150.     SPRITEPUT 1, 1, X - GFXBLK1(0) \ 2, Y - GFXBLK1(1) \ 2, GFXBLK1(0)
  151.     GETKEY RET$
  152.     SETVIEW 0, 0, GETMAXX, GETMAXY
  153.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  154.         FILLSCREEN 0
  155.         EXIT SUB
  156.     END IF
  157.  
  158.     '*************************************************************************
  159.     '* SHOW BLOCK PUT (PUT THE "CHUNKS" RANDOMLY AROUND THE SCREEN)
  160.     '*************************************************************************
  161.     SETVIEW 0, 31, GETMAXX, 64
  162.     FILLVIEW 0
  163.     A$ = "BLKPUT (Mode,X,Y,GfxBlock)   "
  164.     DRWSTRING 1, 7, 0, A$, 10, 16
  165.     XINC = GETMAXX \ 10
  166.     YINC = GETMAXY \ 10
  167.     SETVIEW 0, 32, GETMAXX, GETMAXY
  168.     FOR I = 0 TO GETMAXX \ 2
  169.         X = (GETMAXX + XINC) * RND - XINC
  170.         Y = (GETMAXY + YINC) * RND - YINC
  171.         BLKPUT 1, X, Y, GFXBLK1(0)
  172.     NEXT I
  173.     GETKEY RET$
  174.     SETVIEW 0, 0, GETMAXX, GETMAXY
  175.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  176.         FILLSCREEN 0
  177.         EXIT SUB
  178.     END IF
  179.  
  180.     END SUB
  181.  
  182.     SUB DOCLIP (RET$)
  183.  
  184.     '*************************************************************************
  185.     '* SET UP AND SHOW THE TITLE
  186.     '*************************************************************************
  187.     TITLE$ = "DEMO 2: Clipping capability"
  188.     PALSET PAL2, 0, 255
  189.  
  190.     '*************************************************************************
  191.     '* SET UP THE WINDOWS
  192.     '*************************************************************************
  193.     FILLSCREEN 0
  194.     SETVIEW 0, 0, GETMAXX, GETMAXY
  195.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  196.     A$ = "All primitives automatically clip"
  197.     DRWSTRING 1, 7, 0, A$, 10, 16
  198.  
  199.     WDTH = (GETMAXX + 1) / 2.25
  200.     SPCINGX = ((GETMAXX + 1) - WDTH * 2) / 3
  201.     HGTH = (GETMAXY + 1 - 35) / 2.25
  202.     SPCINGY = ((GETMAXY + 1 - 35) - HGTH * 2) / 3
  203.     XINC = WDTH * 1.5
  204.     YINC = HGTH * 1.5
  205.     XSUB = WDTH * .25
  206.     YSUB = HGTH *